aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1995-12-03 18:58:44 -0700
committerJeff Law <law@gcc.gnu.org>1995-12-03 18:58:44 -0700
commita688adc783671b2c37665f866fbc9e519c0ba376 (patch)
tree5ac2562ddc25df4baf03f0c5f6c19a94cfbe9690 /gcc
parent8b68935bb75a13ef98360d79fde7488805b29c2d (diff)
downloadgcc-a688adc783671b2c37665f866fbc9e519c0ba376.zip
gcc-a688adc783671b2c37665f866fbc9e519c0ba376.tar.gz
gcc-a688adc783671b2c37665f866fbc9e519c0ba376.tar.bz2
pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Handle arbitrary sections.
* pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Handle arbitrary sections. (ASM_OUTPUT_SECTION_NAME): Define. From-SVN: r10667
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index c489df1..c395201 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -1016,7 +1016,10 @@ extern enum cmp_type hppa_branch_type;
#define ASM_OUTPUT_FUNCTION_PREFIX(FILE, NAME) \
if (!TARGET_PORTABLE_RUNTIME && TARGET_GAS && in_section == in_text) \
- fputs ("\t.NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE);
+ fputs ("\t.NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
+ else if (TARGET_PORTABLE_RUNTIME && TARGET_GAS) \
+ fprintf (FILE, \
+ "\t.SUBSPA $%s$\n", NAME);
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
do { tree fntype = TREE_TYPE (TREE_TYPE (DECL)); \
@@ -1815,6 +1818,34 @@ do { fputs ("\t.SPACE $PRIVATE$\n\
#define EXTRA_SECTIONS in_bss, in_readonly_data, in_ctors, in_dtors
#endif
+/* Switch into a generic section.
+ This is currently only used to support section attributes.
+
+ We make the section read-only and executable for a function decl,
+ read-only for a const data decl, and writable for a non-const data decl. */
+#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME) \
+ if (DECL && TREE_CODE (DECL) == FUNCTION_DECL) \
+ { \
+ fputs ("\t.SPACE $TEXT$\n", FILE); \
+ fprintf (FILE, \
+ "\t.SUBSPA $%s$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY,SORT=24\n", \
+ NAME); \
+ } \
+ else if (DECL && TREE_READONLY (DECL)) \
+ { \
+ fputs ("\t.SPACE $TEXT$\n", FILE); \
+ fprintf (FILE, \
+ "\t.SUBSPA $%s$,QUAD=0,ALIGN=8,ACCESS=44,SORT=16\n", \
+ NAME); \
+ } \
+ else \
+ { \
+ fputs ("\t.SPACE $PRIVATE$\n", FILE); \
+ fprintf (FILE, \
+ "\t.SUBSPA $%s$,QUAD=1,ALIGN=8,ACCESS=31,SORT=16\n", \
+ NAME); \
+ }
+
/* FIXME: HPUX ld generates incorrect GOT entries for "T" fixups
which reference data within the $TEXT$ space (for example constant
strings in the $LIT$ subspace).