Fixes <https://bugs.gnu.org/49113>. Reported by Maxime Devos <maximedevos@telenet.be>. Previously, the cross-compiled libc.so linker script would read: OUTPUT_FORMAT(elf64-little) instead of: OUTPUT_FORMAT(elf64-littleaarch64) This is because glibc 2.33 runs "objdump -f" instead of "aarch64-linux-gnu-objdump -f" to determine the output format. * gnu/packages/patches/glibc-cross-objdump.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/base.scm (glibc)[source]: Use it.
		
			
				
	
	
		
			159 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Arrange so that glibc uses 'TRIPLET-objdump -f' rather than 'objdump -f'
 | |
| to determine the 'OUTPUT_FORMAT' value in libc.so when cross-compiling.
 | |
| 
 | |
| Patch submitted upstream:
 | |
|   <https://sourceware.org/pipermail/libc-alpha/2021-July/128333.html>.
 | |
| 
 | |
| diff --git a/aclocal.m4 b/aclocal.m4
 | |
| index c195c4db56..13a791ffde 100644
 | |
| --- a/aclocal.m4
 | |
| +++ b/aclocal.m4
 | |
| @@ -118,8 +118,6 @@ AS=`$CC -print-prog-name=as`
 | |
|  LD=`$CC -print-prog-name=ld`
 | |
|  AR=`$CC -print-prog-name=ar`
 | |
|  AC_SUBST(AR)
 | |
| -OBJDUMP=`$CC -print-prog-name=objdump`
 | |
| -AC_SUBST(OBJDUMP)
 | |
|  OBJCOPY=`$CC -print-prog-name=objcopy`
 | |
|  AC_SUBST(OBJCOPY)
 | |
|  GPROF=`$CC -print-prog-name=gprof`
 | |
| diff --git a/configure b/configure
 | |
| index 9619c10991..fe0eda1cd5 100755
 | |
| --- a/configure
 | |
| +++ b/configure
 | |
| @@ -655,7 +655,6 @@ LD
 | |
|  AS
 | |
|  GPROF
 | |
|  OBJCOPY
 | |
| -OBJDUMP
 | |
|  AR
 | |
|  LN_S
 | |
|  INSTALL_DATA
 | |
| @@ -690,6 +689,7 @@ sysheaders
 | |
|  ac_ct_CXX
 | |
|  CXXFLAGS
 | |
|  CXX
 | |
| +OBJDUMP
 | |
|  READELF
 | |
|  CPP
 | |
|  cross_compiling
 | |
| @@ -2962,6 +2962,98 @@ else
 | |
|    READELF="$ac_cv_prog_READELF"
 | |
|  fi
 | |
|  
 | |
| +if test -n "$ac_tool_prefix"; then
 | |
| +  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 | |
| +set dummy ${ac_tool_prefix}objdump; ac_word=$2
 | |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 | |
| +$as_echo_n "checking for $ac_word... " >&6; }
 | |
| +if ${ac_cv_prog_OBJDUMP+:} false; then :
 | |
| +  $as_echo_n "(cached) " >&6
 | |
| +else
 | |
| +  if test -n "$OBJDUMP"; then
 | |
| +  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 | |
| +else
 | |
| +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 | |
| +for as_dir in $PATH
 | |
| +do
 | |
| +  IFS=$as_save_IFS
 | |
| +  test -z "$as_dir" && as_dir=.
 | |
| +    for ac_exec_ext in '' $ac_executable_extensions; do
 | |
| +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
 | |
| +    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
 | |
| +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 | |
| +    break 2
 | |
| +  fi
 | |
| +done
 | |
| +  done
 | |
| +IFS=$as_save_IFS
 | |
| +
 | |
| +fi
 | |
| +fi
 | |
| +OBJDUMP=$ac_cv_prog_OBJDUMP
 | |
| +if test -n "$OBJDUMP"; then
 | |
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
 | |
| +$as_echo "$OBJDUMP" >&6; }
 | |
| +else
 | |
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 | |
| +$as_echo "no" >&6; }
 | |
| +fi
 | |
| +
 | |
| +
 | |
| +fi
 | |
| +if test -z "$ac_cv_prog_OBJDUMP"; then
 | |
| +  ac_ct_OBJDUMP=$OBJDUMP
 | |
| +  # Extract the first word of "objdump", so it can be a program name with args.
 | |
| +set dummy objdump; ac_word=$2
 | |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 | |
| +$as_echo_n "checking for $ac_word... " >&6; }
 | |
| +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
 | |
| +  $as_echo_n "(cached) " >&6
 | |
| +else
 | |
| +  if test -n "$ac_ct_OBJDUMP"; then
 | |
| +  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 | |
| +else
 | |
| +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 | |
| +for as_dir in $PATH
 | |
| +do
 | |
| +  IFS=$as_save_IFS
 | |
| +  test -z "$as_dir" && as_dir=.
 | |
| +    for ac_exec_ext in '' $ac_executable_extensions; do
 | |
| +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
 | |
| +    ac_cv_prog_ac_ct_OBJDUMP="objdump"
 | |
| +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
 | |
| +    break 2
 | |
| +  fi
 | |
| +done
 | |
| +  done
 | |
| +IFS=$as_save_IFS
 | |
| +
 | |
| +fi
 | |
| +fi
 | |
| +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 | |
| +if test -n "$ac_ct_OBJDUMP"; then
 | |
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
 | |
| +$as_echo "$ac_ct_OBJDUMP" >&6; }
 | |
| +else
 | |
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 | |
| +$as_echo "no" >&6; }
 | |
| +fi
 | |
| +
 | |
| +  if test "x$ac_ct_OBJDUMP" = x; then
 | |
| +    OBJDUMP="false"
 | |
| +  else
 | |
| +    case $cross_compiling:$ac_tool_warned in
 | |
| +yes:)
 | |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
 | |
| +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 | |
| +ac_tool_warned=yes ;;
 | |
| +esac
 | |
| +    OBJDUMP=$ac_ct_OBJDUMP
 | |
| +  fi
 | |
| +else
 | |
| +  OBJDUMP="$ac_cv_prog_OBJDUMP"
 | |
| +fi
 | |
| +
 | |
|  
 | |
|  # We need the C++ compiler only for testing.
 | |
|  ac_ext=cpp
 | |
| @@ -4553,8 +4645,6 @@ AS=`$CC -print-prog-name=as`
 | |
|  LD=`$CC -print-prog-name=ld`
 | |
|  AR=`$CC -print-prog-name=ar`
 | |
|  
 | |
| -OBJDUMP=`$CC -print-prog-name=objdump`
 | |
| -
 | |
|  OBJCOPY=`$CC -print-prog-name=objcopy`
 | |
|  
 | |
|  GPROF=`$CC -print-prog-name=gprof`
 | |
| diff --git a/configure.ac b/configure.ac
 | |
| index 34ecbba540..924af12738 100644
 | |
| --- a/configure.ac
 | |
| +++ b/configure.ac
 | |
| @@ -52,6 +52,7 @@ fi
 | |
|  AC_SUBST(cross_compiling)
 | |
|  AC_PROG_CPP
 | |
|  AC_CHECK_TOOL(READELF, readelf, false)
 | |
| +AC_CHECK_TOOL(OBJDUMP, objdump, false)
 | |
|  
 | |
|  # We need the C++ compiler only for testing.
 | |
|  AC_PROG_CXX
 |