If the kernel is configured to be built with debug symbols, or has bug tables, comparing files may not work if line numbers change. This makes comparing object files with these options harder to do. Let's strip out the debug info and drop the __bug_table here so that we don't see false positives. There may be other things to drop later, and it may be architecture specific, but this works for me with my ARM64 build.
Showing the changes to scripts/objdiff (1 of 1 file). Show all
Unified · Split
| @@ -57,13 +57,15 @@ get_output_dir() { · 56 unmodified lines | ||
| 57 | 57 | do_objdump() { |
| 58 | 58 | dir=$(get_output_dir $1) |
| 59 | 59 | base=${1##*/} |
| 60 | + stripped=$dir/${base%.o}.stripped | |
| 60 | 61 | dis=$dir/${base%.o}.dis |
| 61 | 62 | |
| 62 | 63 | [ ! -d "$dir" ] && mkdir -p $dir |
| 63 | 64 | |
| 64 | 65 | # remove addresses for a cleaner diff |
| 65 | 66 | # http://dummdida.tumblr.com/post/60924060451/binary-diff-between-libc-from-scientificlinux-and |
| 66 | − $OBJDUMP -D $1 | sed "s/^[[:space:]]\+[0-9a-f]\+//" > $dis | |
| 67 | + $STRIP -g $1 -R __bug_table -R .note -R .comment -o $stripped | |
| 68 | + $OBJDUMP -D $stripped | sed -e "s/^[[:space:]]\+[0-9a-f]\+//" -e "s:^$stripped:$1:" > $dis | |
| 67 | 69 | } |
| 68 | 70 | |
| 69 | 71 | dorecord() { |
| @@ -73,6 +75,7 @@ dorecord() { · 3 unmodified lines | ||
| 73 | 75 | |
| 74 | 76 | CMT="`git rev-parse --short HEAD`" |
| 75 | 77 | |
| 78 | + STRIP="${CROSS_COMPILE}strip" | |
| 76 | 79 | OBJDUMP="${CROSS_COMPILE}objdump" |
| 77 | 80 | |
| 78 | 81 | for d in $FILES; do |