diff options
author | marcel <marcel@FreeBSD.org> | 2001-01-29 01:46:50 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2001-01-29 01:46:50 +0000 |
commit | 3e70da6121936e8a4abc047e325d2373e0984733 (patch) | |
tree | e6f5b90a6581575040a3622db210797454444d3b /sys | |
parent | a814a5c65302a3e23434ad3b038e8067f0162df9 (diff) | |
download | FreeBSD-src-3e70da6121936e8a4abc047e325d2373e0984733.zip FreeBSD-src-3e70da6121936e8a4abc047e325d2373e0984733.tar.gz |
o Add explicit alignment to linker set definitions. On i386, data
declarations will not be aligned by default.
o Remove the alignment work-around for alpha. Our current alpha
as(1) does not assume alignment after section switching, nor
does the ia64 as(1).
Diffstat (limited to 'sys')
-rw-r--r-- | sys/sys/linker_set.h | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/sys/sys/linker_set.h b/sys/sys/linker_set.h index 01b8e6a..2ee690e 100644 --- a/sys/sys/linker_set.h +++ b/sys/sys/linker_set.h @@ -44,24 +44,18 @@ */ #ifdef __ELF__ -/* - * Alpha GAS needs an align before the section change. It seems to assume - * that after the .previous, it is aligned, so the following .align 3 is - * ignored. Since the previous instructions often contain strings, this is - * a problem. - */ - #if defined(__alpha__) || defined(__ia64__) #define MAKE_SET(set, sym) \ static void const * const __set_##set##_sym_##sym = &sym; \ - __asm(".p2align 3"); \ __asm(".section .set." #set ",\"aw\""); \ + __asm(".p2align 3"); \ __asm(".quad " #sym); \ __asm(".previous") #else #define MAKE_SET(set, sym) \ static void const * const __set_##set##_sym_##sym = &sym; \ __asm(".section .set." #set ",\"aw\""); \ + __asm(".p2align 2"); \ __asm(".long " #sym); \ __asm(".previous") #endif |