summaryrefslogtreecommitdiffstats
path: root/sys/sys/linker_set.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2001-01-29 01:46:50 +0000
committermarcel <marcel@FreeBSD.org>2001-01-29 01:46:50 +0000
commit3e70da6121936e8a4abc047e325d2373e0984733 (patch)
treee6f5b90a6581575040a3622db210797454444d3b /sys/sys/linker_set.h
parenta814a5c65302a3e23434ad3b038e8067f0162df9 (diff)
downloadFreeBSD-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/sys/linker_set.h')
-rw-r--r--sys/sys/linker_set.h10
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
OpenPOWER on IntegriCloud