mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	There is a configure test for assembler support for the gnu_unique_object symbol type. This support was added in binutils 2.20, so is present in all versions supported for building glibc. Thus, I think the configure test can be removed; this patch does so. Now, there is a caveat that the gas NEWS entry refers to this as a feature for GNU/Linux targets. But the condition is use of ELFOSABI_GNU or ELFOSABI_NONE. ELFOSABI_GNU covers Hurd as well as GNU/Linux (as was the case with the older ELFOSABI_LINUX name), and ELFOSABI_NONE means this is effectively OS-independent. Furthermore, I think a correct binutils port for any glibc target ought to support this feature for use with glibc; glibc supports this as an OS-independent feature (the configure test is only about glibc testcases). Tested for x86_64 (testsuite, and that installed shared libraries are unchanged by the patch). * configure.ac (libc_cv_asm_unique_object): Remove configure test. * configure: Regenerated. * config.h.in (HAVE_ASM_UNIQUE_OBJECT): Remove #undef. * elf/tst-unique1.c (do_test) [HAVE_ASM_UNIQUE_OBJECT]: Make code unconditional. * elf/tst-unique1mod1.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise. * elf/tst-unique1mod2.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise. * elf/tst-unique2.c (do_test) [HAVE_ASM_UNIQUE_OBJECT]: Likewise. (do_test) [!HAVE_ASM_UNIQUE_OBJECT]: Remove conditional code. * elf/tst-unique2mod1.c [HAVE_ASM_UNIQUE_OBJECT]: Make code unconditional. * elf/tst-unique2mod2.c [HAVE_ASM_UNIQUE_OBJECT]: Likewise.
		
			
				
	
	
		
			17 lines
		
	
	
		
			218 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
		
			218 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include <config.h>
 | 
						|
 | 
						|
asm (".data;"
 | 
						|
     ".globl var\n"
 | 
						|
     ".type var, %gnu_unique_object\n"
 | 
						|
     ".size var, 4\n"
 | 
						|
     "var:.zero 4\n"
 | 
						|
     ".previous");
 | 
						|
extern int var;
 | 
						|
 | 
						|
int *
 | 
						|
f (void)
 | 
						|
{
 | 
						|
  var = 1;
 | 
						|
  return &var;
 | 
						|
}
 |