ifelse([$7],,,[dnl
if test $[$2] = yes; then
$7
+fi])
+ifelse([$8],,,[dnl
+if test $[$2] != yes; then
+ $8
fi])])
dnl gcc_SUN_LD_VERSION
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .p2align with maximum skip" >&5
$as_echo_n "checking assembler for .p2align with maximum skip... " >&6; }
if test "${gcc_cv_as_max_skip_p2align+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .literal16" >&5
$as_echo_n "checking assembler for .literal16... " >&6; }
if test "${gcc_cv_as_literal16+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for working .subsection -1" >&5
$as_echo_n "checking assembler for working .subsection -1... " >&6; }
if test "${gcc_cv_as_subsection_m1+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .weak" >&5
$as_echo_n "checking assembler for .weak... " >&6; }
if test "${gcc_cv_as_weak+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .weakref" >&5
$as_echo_n "checking assembler for .weakref... " >&6; }
if test "${gcc_cv_as_weakref+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .nsubspa comdat" >&5
$as_echo_n "checking assembler for .nsubspa comdat... " >&6; }
if test "${gcc_cv_as_nsubspa_comdat+set}" = set; then :
fi
+
# .hidden needs to be supported in both the assembler and the linker,
# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
# This is irritatingly difficult to feature test for; we have to check the
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_hidden" >&5
$as_echo "$gcc_cv_as_hidden" >&6; }
+
case "${target}" in
*-*-darwin*)
# Darwin as has some visibility support, though with a different syntax.
$as_echo "#define HAVE_AS_LEB128 1" >>confdefs.h
+fi
+if test $gcc_cv_as_leb128 != yes; then
+
+$as_echo "#define HAVE_AS_LEB128 0" >>confdefs.h
+
fi
# Check if we have assembler support for unwind directives.
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_directive" >&5
$as_echo "$gcc_cv_as_cfi_directive" >&6; }
+
if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for working cfi advance" >&5
$as_echo_n "checking assembler for working cfi advance... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_advance_working" >&5
$as_echo "$gcc_cv_as_cfi_advance_working" >&6; }
+
else
# no objdump, err on the side of caution
gcc_cv_as_cfi_advance_working=no
$as_echo "$gcc_cv_as_cfi_personality_directive" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_GAS_CFI_PERSONALITY_DIRECTIVE `if test $gcc_cv_as_cfi_personality_directive = yes;
then echo 1; else echo 0; fi`
+
cat >>confdefs.h <<_ACEOF
#define HAVE_GAS_CFI_SECTIONS_DIRECTIVE `if test $gcc_cv_as_cfi_sections_directive = yes;
then echo 1; else echo 0; fi`
$as_echo "$gcc_cv_as_eh_frame" >&6; }
+
if test $gcc_cv_as_eh_frame = buggy; then
$as_echo "#define USE_AS_TRADITIONAL_FORMAT 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_shf_merge" >&5
$as_echo "$gcc_cv_as_shf_merge" >&6; }
+
if test $gcc_cv_as_shf_merge = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for section merging support" >&5
$as_echo_n "checking assembler for section merging support... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_shf_merge" >&5
$as_echo "$gcc_cv_as_shf_merge" >&6; }
+
fi
cat >>confdefs.h <<_ACEOF
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for COMDAT group support (GNU as)" >&5
$as_echo_n "checking assembler for COMDAT group support (GNU as)... " >&6; }
if test "${gcc_cv_as_comdat_group+set}" = set; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_comdat_group" >&5
$as_echo "$gcc_cv_as_comdat_group" >&6; }
+
if test $gcc_cv_as_comdat_group = yes; then
gcc_cv_as_comdat_group_percent=no
gcc_cv_as_comdat_group_group=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_comdat_group_percent" >&5
$as_echo "$gcc_cv_as_comdat_group_percent" >&6; }
+
if test $gcc_cv_as_comdat_group_percent = yes; then
gcc_cv_as_comdat_group_group=no
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_comdat_group_group" >&5
$as_echo "$gcc_cv_as_comdat_group_group" >&6; }
+
;;
esac
if test -z "${gcc_cv_as_comdat_group_group+set}"; then
fi
+
# Thread-local storage - the check is heavily parameterized.
conftest_s=
tls_first_major=
if test $gcc_cv_as_tls = yes; then
set_have_as_tls=yes
fi
+
fi
if test $set_have_as_tls = yes ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_aarch64_mabi" >&5
$as_echo "$gcc_cv_as_aarch64_mabi" >&6; }
+
if test x$gcc_cv_as_aarch64_mabi = xyes; then
$as_echo "#define HAVE_AS_MABI_OPTION 1" >>confdefs.h
$as_echo "#define HAVE_AS_SMALL_PIC_RELOCS 1" >>confdefs.h
fi
+
# Enable default workaround for AArch64 Cortex-A53 erratum 835769.
# Check whether --enable-fix-cortex-a53-835769 was given.
if test "${enable_fix_cortex_a53_835769+set}" = set; then :
$as_echo "#define HAVE_AS_EXPLICIT_RELOCS 1" >>confdefs.h
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for jsrdirect relocation support" >&5
$as_echo_n "checking assembler for jsrdirect relocation support... " >&6; }
if test "${gcc_cv_as_alpha_jsrdirect_relocs+set}" = set; then :
$as_echo "#define HAVE_AS_JSRDIRECT_RELOCS 1" >>confdefs.h
fi
+
;;
avr-*-*)
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -mrmw option" >&5
$as_echo_n "checking assembler for -mrmw option... " >&6; }
if test "${gcc_cv_as_avr_mrmw+set}" = set; then :
$as_echo "#define HAVE_AS_AVR_MRMW_OPTION 1" >>confdefs.h
fi
+
;;
cris-*-*)
$as_echo "#define HAVE_AS_NO_MUL_BUG_ABORT_OPTION 1" >>confdefs.h
fi
+
;;
sparc*-*-*)
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -relax option" >&5
$as_echo_n "checking assembler for -relax option... " >&6; }
if test "${gcc_cv_as_sparc_relax+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for GOTDATA_OP relocs" >&5
$as_echo_n "checking assembler for GOTDATA_OP relocs... " >&6; }
if test "${gcc_cv_as_sparc_gotdata_op+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for unaligned pcrel relocs" >&5
$as_echo_n "checking assembler for unaligned pcrel relocs... " >&6; }
if test "${gcc_cv_as_sparc_ua_pcrel+set}" = set; then :
fi
-fi # unaligned pcrel relocs
+
+fi
+ # unaligned pcrel relocs
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for offsetable %lo()" >&5
$as_echo_n "checking assembler for offsetable %lo()... " >&6; }
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for FMAF, HPC, and VIS 3.0 instructions" >&5
$as_echo_n "checking assembler for FMAF, HPC, and VIS 3.0 instructions... " >&6; }
if test "${gcc_cv_as_sparc_fmaf+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for SPARC4 instructions" >&5
$as_echo_n "checking assembler for SPARC4 instructions... " >&6; }
if test "${gcc_cv_as_sparc_sparc4+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for SPARC5 and VIS 4.0 instructions" >&5
$as_echo_n "checking assembler for SPARC5 and VIS 4.0 instructions... " >&6; }
if test "${gcc_cv_as_sparc_sparc5+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for LEON instructions" >&5
$as_echo_n "checking assembler for LEON instructions... " >&6; }
if test "${gcc_cv_as_sparc_leon+set}" = set; then :
$as_echo "#define HAVE_AS_LEON 1" >>confdefs.h
fi
+
;;
i[34567]86-*-* | x86_64-*-*)
$as_echo "$gcc_cv_as_comm_has_align" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_GAS_ALIGNED_COMM `if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`
_ACEOF
$as_echo "#define HAVE_GAS_PE_SECREL32_RELOC 1" >>confdefs.h
fi
+
# Test if the assembler supports the extended form of the .section
# directive that specifies section alignment. LTO support uses this,
# but normally only after installation, so we warn but don't fail the
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_section_has_align" >&5
$as_echo "$gcc_cv_as_section_has_align" >&6; }
+
if test x$gcc_cv_as_section_has_align != xyes; then
case ",$enable_languages," in
*,lto,*)
$as_echo "$gcc_cv_as_section_has_e" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_GAS_SECTION_EXCLUDE `if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`
_ACEOF
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for fildq and fistpq mnemonics" >&5
$as_echo_n "checking assembler for fildq and fistpq mnemonics... " >&6; }
if test "${gcc_cv_as_ix86_fildq+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for cmov syntax" >&5
$as_echo_n "checking assembler for cmov syntax... " >&6; }
if test "${gcc_cv_as_ix86_cmov_sun_syntax+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for ffreep mnemonic" >&5
$as_echo_n "checking assembler for ffreep mnemonic... " >&6; }
if test "${gcc_cv_as_ix86_ffreep+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .quad directive" >&5
$as_echo_n "checking assembler for .quad directive... " >&6; }
if test "${gcc_cv_as_ix86_quad+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for sahf mnemonic" >&5
$as_echo_n "checking assembler for sahf mnemonic... " >&6; }
if test "${gcc_cv_as_ix86_sahf+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for interunit movq mnemonic" >&5
$as_echo_n "checking assembler for interunit movq mnemonic... " >&6; }
if test "${gcc_cv_as_ix86_interunit_movq+set}" = set; then :
$as_echo "$gcc_cv_as_ix86_interunit_movq" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_IX86_INTERUNIT_MOVQ `if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`
_ACEOF
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for swap suffix" >&5
$as_echo_n "checking assembler for swap suffix... " >&6; }
if test "${gcc_cv_as_ix86_swap+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for different section symbol subtraction" >&5
$as_echo_n "checking assembler for different section symbol subtraction... " >&6; }
if test "${gcc_cv_as_ix86_diff_sect_delta+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for rep and lock prefix" >&5
$as_echo_n "checking assembler for rep and lock prefix... " >&6; }
if test "${gcc_cv_as_ix86_rep_lock_prefix+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for ud2 mnemonic" >&5
$as_echo_n "checking assembler for ud2 mnemonic... " >&6; }
if test "${gcc_cv_as_ix86_ud2+set}" = set; then :
fi
+
# Enforce 32-bit output with gas and gld.
if test x$gas = xyes; then
as_ix86_gas_32_opt="--32"
fi
+
conftest_s='
.section .tdata,"aw'$tls_section_flag'",@progbits
tls_ld:
$as_echo "$gcc_cv_as_ix86_tlsldmplt" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_IX86_TLSLDMPLT `if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`
_ACEOF
$as_echo "$gcc_cv_as_ix86_tlsldm" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_IX86_TLSLDM `if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`
_ACEOF
$as_echo "$gcc_cv_as_ix86_got32x" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_IX86_GOT32X `if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`
_ACEOF
$as_echo "$gcc_cv_as_ix86_gotoff_in_data" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_GOTOFF_IN_DATA `if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`
_ACEOF
$as_echo "$gcc_cv_as_ix86_tls_get_addr_via_got" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_IX86_TLS_GET_ADDR_GOT `if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`
_ACEOF
fi
+
;;
powerpc*-*-*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_machine_directive" >&5
$as_echo "$gcc_cv_as_machine_directive" >&6; }
+
if test x$gcc_cv_as_machine_directive != xyes; then
echo "*** This target requires an assembler supporting \".machine\"" >&2
echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr5"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr5x"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr6"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .csect .text[PR]
LCF..0:
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr6"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr6"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr7"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr7"
.csect .text[PR]
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr8"
.csect .text[PR]';;
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "pwr9"
.csect .text[PR]';;
fi
+
case $target in
*-*-aix*) conftest_s=' .csect .text[PR]
lwsync';;
fi
+
case $target in
*-*-aix*) conftest_s=' .machine "476"
.csect .text[PR]
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
$as_echo_n "checking assembler for .gnu_attribute support... " >&6; }
if test "${gcc_cv_as_powerpc_gnu_attribute+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for tls marker support" >&5
$as_echo_n "checking assembler for tls marker support... " >&6; }
if test "${gcc_cv_as_powerpc_tls_markers+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for prologue entry point marker support" >&5
$as_echo_n "checking assembler for prologue entry point marker support... " >&6; }
if test "${gcc_cv_as_powerpc_entry_markers+set}" = set; then :
fi
+
case $target in
*-*-aix*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for AIX .ref support" >&5
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for AIX DWARF location lists section support" >&5
$as_echo_n "checking assembler for AIX DWARF location lists section support... " >&6; }
if test "${gcc_cv_as_aix_dwloc+set}" = set; then :
$as_echo "#define HAVE_XCOFF_DWARF_EXTRAS 1" >>confdefs.h
fi
+
;;
esac
;;
fi
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -mno-shared support" >&5
$as_echo_n "checking assembler for -mno-shared support... " >&6; }
if test "${gcc_cv_as_mips_no_shared+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
$as_echo_n "checking assembler for .gnu_attribute support... " >&6; }
if test "${gcc_cv_as_mips_gnu_attribute+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .module support" >&5
$as_echo_n "checking assembler for .module support... " >&6; }
if test "${gcc_cv_as_mips_dot_module+set}" = set; then :
$as_echo "#define HAVE_AS_DOT_MODULE 1" >>confdefs.h
fi
+
if test x$gcc_cv_as_mips_dot_module = xno \
&& test x$with_fp_32 != x; then
as_fn_error "Requesting --with-fp-32= requires assembler support for .module." "$LINENO" 5
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .dtprelword support" >&5
$as_echo_n "checking assembler for .dtprelword support... " >&6; }
if test "${gcc_cv_as_mips_dtprelword+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for DSPR1 mult with four accumulators support" >&5
$as_echo_n "checking assembler for DSPR1 mult with four accumulators support... " >&6; }
if test "${gcc_cv_as_mips_dspr1_mult+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker for explicit JALR relocation" >&5
$as_echo_n "checking assembler and linker for explicit JALR relocation... " >&6; }
gcc_cv_as_ld_jalr_reloc=no
$as_echo "#define HAVE_AS_NAN 1" >>confdefs.h
fi
+
if test x$gcc_cv_as_mips_nan = xno \
&& test x$with_nan != x; then
as_fn_error "Requesting --with-nan= requires assembler support for -mnan=" "$LINENO" 5
$as_echo "#define HAVE_AS_GNU_ATTRIBUTE 1" >>confdefs.h
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .machine and .machinemode support" >&5
$as_echo_n "checking assembler for .machine and .machinemode support... " >&6; }
if test "${gcc_cv_as_s390_machine_machinemode+set}" = set; then :
$as_echo "#define HAVE_AS_MACHINE_MACHINEMODE 1" >>confdefs.h
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for architecture modifiers support" >&5
$as_echo_n "checking assembler for architecture modifiers support... " >&6; }
if test "${gcc_cv_as_s390_architecture_modifiers+set}" = set; then :
$as_echo "#define HAVE_AS_ARCHITECTURE_MODIFIERS 1" >>confdefs.h
fi
+
;;
esac
$as_echo "$gcc_cv_as_dwarf2_debug_line" >&6; }
+
# The .debug_line file table must be in the exact order that
# we specified the files, since these indices are also used
# by DW_AT_decl_file. Approximate this test by testing if
$as_echo "$gcc_cv_as_dwarf2_file_buggy" >&6; }
+
if test $gcc_cv_as_dwarf2_debug_line = yes \
&& test $gcc_cv_as_dwarf2_file_buggy = no; then
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for --gstabs option" >&5
$as_echo_n "checking assembler for --gstabs option... " >&6; }
if test "${gcc_cv_as_gstabs_flag+set}" = set; then :
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for --debug-prefix-map option" >&5
$as_echo_n "checking assembler for --debug-prefix-map option... " >&6; }
if test "${gcc_cv_as_debug_prefix_map_flag+set}" = set; then :
$as_echo "#define HAVE_AS_DEBUG_PREFIX_MAP 1" >>confdefs.h
fi
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for compressed debug sections" >&5
$as_echo "$gcc_cv_as_compress_debug" >&6; }
+
cat >>confdefs.h <<_ACEOF
#define HAVE_AS_COMPRESS_DEBUG $gcc_cv_as_compress_debug
_ACEOF
fi
+
if test x$with_sysroot = x && test x$host = x$target \
&& test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
&& test "$prefix" != "NONE"; then
fi
fi
+
fi
if test x$enable_gnu_unique_object = xyes; then
fi
fi]],
[AC_DEFINE(HAVE_AS_LEB128, 1,
+ [Define if your assembler supports .sleb128 and .uleb128.])],
+ [AC_DEFINE(HAVE_AS_LEB128, 0,
[Define if your assembler supports .sleb128 and .uleb128.])])
# Check if we have assembler support for unwind directives.
va_start (ap, comment);
-#ifdef HAVE_AS_LEB128
- fputs ("\t.uleb128 ", asm_out_file);
- fprint_whex (asm_out_file, value);
-
- if (flag_debug_asm && comment)
+ if (HAVE_AS_LEB128)
{
- fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START);
- vfprintf (asm_out_file, comment, ap);
+ fputs ("\t.uleb128 ", asm_out_file);
+ fprint_whex (asm_out_file, value);
+
+ if (flag_debug_asm && comment)
+ {
+ fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START);
+ vfprintf (asm_out_file, comment, ap);
+ }
}
-#else
- {
- unsigned HOST_WIDE_INT work = value;
- const char *byte_op = targetm.asm_out.byte_op;
-
- if (byte_op)
- fputs (byte_op, asm_out_file);
- do
- {
- int byte = (work & 0x7f);
- work >>= 7;
- if (work != 0)
- /* More bytes to follow. */
- byte |= 0x80;
-
- if (byte_op)
- {
- fprintf (asm_out_file, "%#x", byte);
- if (work != 0)
- fputc (',', asm_out_file);
- }
- else
- assemble_integer (GEN_INT (byte), 1, BITS_PER_UNIT, 1);
- }
- while (work != 0);
-
- if (flag_debug_asm)
+ else
{
- fprintf (asm_out_file, "\t%s uleb128 " HOST_WIDE_INT_PRINT_HEX,
- ASM_COMMENT_START, value);
- if (comment)
+ unsigned HOST_WIDE_INT work = value;
+ const char *byte_op = targetm.asm_out.byte_op;
+
+ if (byte_op)
+ fputs (byte_op, asm_out_file);
+ do
{
- fputs ("; ", asm_out_file);
- vfprintf (asm_out_file, comment, ap);
+ int byte = (work & 0x7f);
+ work >>= 7;
+ if (work != 0)
+ /* More bytes to follow. */
+ byte |= 0x80;
+
+ if (byte_op)
+ {
+ fprintf (asm_out_file, "%#x", byte);
+ if (work != 0)
+ fputc (',', asm_out_file);
+ }
+ else
+ assemble_integer (GEN_INT (byte), 1, BITS_PER_UNIT, 1);
+ }
+ while (work != 0);
+
+ if (flag_debug_asm)
+ {
+ fprintf (asm_out_file, "\t%s uleb128 " HOST_WIDE_INT_PRINT_HEX,
+ ASM_COMMENT_START, value);
+ if (comment)
+ {
+ fputs ("; ", asm_out_file);
+ vfprintf (asm_out_file, comment, ap);
+ }
}
}
- }
-#endif
+
putc ('\n', asm_out_file);
va_end (ap);
va_start (ap, comment);
-#ifdef HAVE_AS_LEB128
- fprintf (asm_out_file, "\t.sleb128 " HOST_WIDE_INT_PRINT_DEC, value);
-
- if (flag_debug_asm && comment)
+ if (HAVE_AS_LEB128)
{
- fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START);
- vfprintf (asm_out_file, comment, ap);
+ fprintf (asm_out_file, "\t.sleb128 " HOST_WIDE_INT_PRINT_DEC, value);
+
+ if (flag_debug_asm && comment)
+ {
+ fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START);
+ vfprintf (asm_out_file, comment, ap);
+ }
}
-#else
- {
- HOST_WIDE_INT work = value;
- int more, byte;
- const char *byte_op = targetm.asm_out.byte_op;
-
- if (byte_op)
- fputs (byte_op, asm_out_file);
- do
- {
- byte = (work & 0x7f);
- /* arithmetic shift */
- work >>= 7;
- more = !((work == 0 && (byte & 0x40) == 0)
- || (work == -1 && (byte & 0x40) != 0));
- if (more)
- byte |= 0x80;
-
- if (byte_op)
- {
- fprintf (asm_out_file, "%#x", byte);
- if (more)
- fputc (',', asm_out_file);
- }
- else
- assemble_integer (GEN_INT (byte), 1, BITS_PER_UNIT, 1);
- }
- while (more);
-
- if (flag_debug_asm)
+ else
{
- fprintf (asm_out_file, "\t%s sleb128 " HOST_WIDE_INT_PRINT_DEC,
- ASM_COMMENT_START, value);
- if (comment)
+ HOST_WIDE_INT work = value;
+ int more, byte;
+ const char *byte_op = targetm.asm_out.byte_op;
+
+ if (byte_op)
+ fputs (byte_op, asm_out_file);
+ do
{
- fputs ("; ", asm_out_file);
- vfprintf (asm_out_file, comment, ap);
+ byte = (work & 0x7f);
+ /* arithmetic shift */
+ work >>= 7;
+ more = !((work == 0 && (byte & 0x40) == 0)
+ || (work == -1 && (byte & 0x40) != 0));
+ if (more)
+ byte |= 0x80;
+
+ if (byte_op)
+ {
+ fprintf (asm_out_file, "%#x", byte);
+ if (more)
+ fputc (',', asm_out_file);
+ }
+ else
+ assemble_integer (GEN_INT (byte), 1, BITS_PER_UNIT, 1);
+ }
+ while (more);
+
+ if (flag_debug_asm)
+ {
+ fprintf (asm_out_file, "\t%s sleb128 " HOST_WIDE_INT_PRINT_DEC,
+ ASM_COMMENT_START, value);
+ if (comment)
+ {
+ fputs ("; ", asm_out_file);
+ vfprintf (asm_out_file, comment, ap);
+ }
}
}
- }
-#endif
+
fputc ('\n', asm_out_file);
va_end (ap);
va_start (ap, comment);
-#ifdef HAVE_AS_LEB128
+ gcc_assert (HAVE_AS_LEB128);
+
fputs ("\t.uleb128 ", asm_out_file);
assemble_name (asm_out_file, lab1);
putc ('-', asm_out_file);
assemble_name (asm_out_file, lab2);
-#else
- gcc_unreachable ();
-#endif
if (flag_debug_asm && comment)
{
va_start (ap, comment);
-#ifdef HAVE_AS_LEB128
+ gcc_assert (HAVE_AS_LEB128);
+
fputs ("\t.sleb128 ", asm_out_file);
assemble_name (asm_out_file, lab1);
putc ('-', asm_out_file);
assemble_name (asm_out_file, lab2);
-#else
- gcc_unreachable ();
-#endif
if (flag_debug_asm && comment)
{
ASM_OUTPUT_LABEL (asm_out_file, list_head->ll_symbol);
dw_loc_list_ref curr = list_head;
-#ifdef HAVE_AS_LEB128
const char *last_section = NULL;
const char *base_label = NULL;
-#endif
/* Walk the location list, and output each range + expression. */
for (curr = list_head; curr != NULL; curr = curr->dw_loc_next)
"Location list length (%s)",
list_head->ll_symbol);
}
-#ifdef HAVE_AS_LEB128
- else if (!have_multiple_function_sections)
+ else if (!have_multiple_function_sections && HAVE_AS_LEB128)
{
/* If all code is in .text section, the base address is
already provided by the CU attributes. Use
"Location list end address (%s)",
list_head->ll_symbol);
}
- else
+ else if (HAVE_AS_LEB128)
{
/* Otherwise, find out how many consecutive entries could share
the same base entry. If just one, emit DW_LLE_start_length,
"(%s)", list_head->ll_symbol);
}
}
-#else
/* The assembler does not support .uleb128 directive. Emit
DW_LLE_start_end with a pair of absolute addresses. */
else
"Location list end address (%s)",
list_head->ll_symbol);
}
-#endif
}
else if (dwarf_split_debug_info)
{
dw_ranges *r;
char l1[MAX_ARTIFICIAL_LABEL_BYTES];
char l2[MAX_ARTIFICIAL_LABEL_BYTES];
-#ifdef HAVE_AS_LEB128
char basebuf[MAX_ARTIFICIAL_LABEL_BYTES];
-#endif
switch_to_section (debug_ranges_section);
ASM_OUTPUT_LABEL (asm_out_file, ranges_section_label);
}
const char *lab = "";
-#ifdef HAVE_AS_LEB128
unsigned int len = vec_safe_length (ranges_table);
const char *base = NULL;
-#endif
FOR_EACH_VEC_SAFE_ELT (ranges_table, i, r)
{
int block_num = r->num;
ASM_OUTPUT_LABEL (asm_out_file, r->label);
lab = r->label;
}
-#ifdef HAVE_AS_LEB128
- if (r->label || r->maybe_new_sec)
+ if (HAVE_AS_LEB128 && (r->label || r->maybe_new_sec))
base = NULL;
-#endif
if (block_num > 0)
{
char blabel[MAX_ARTIFICIAL_LABEL_BYTES];
ASM_GENERATE_INTERNAL_LABEL (blabel, BLOCK_BEGIN_LABEL, block_num);
ASM_GENERATE_INTERNAL_LABEL (elabel, BLOCK_END_LABEL, block_num);
-#ifdef HAVE_AS_LEB128
- /* If all code is in the text section, then the compilation
- unit base address defaults to DW_AT_low_pc, which is the
- base of the text section. */
- if (!have_multiple_function_sections)
+ if (HAVE_AS_LEB128)
{
- dw2_asm_output_data (1, DW_RLE_offset_pair,
- "DW_RLE_offset_pair (%s)", lab);
- dw2_asm_output_delta_uleb128 (blabel, text_section_label,
- "Range begin address (%s)", lab);
- dw2_asm_output_delta_uleb128 (elabel, text_section_label,
- "Range end address (%s)", lab);
- continue;
- }
- if (base == NULL)
- {
- dw_ranges *r2 = NULL;
- if (i < len - 1)
- r2 = &(*ranges_table)[i + 1];
- if (r2
- && r2->num != 0
- && r2->label == NULL
- && !r2->maybe_new_sec)
+ /* If all code is in the text section, then the compilation
+ unit base address defaults to DW_AT_low_pc, which is the
+ base of the text section. */
+ if (!have_multiple_function_sections)
{
- dw2_asm_output_data (1, DW_RLE_base_address,
- "DW_RLE_base_address (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
- "Base address (%s)", lab);
- strcpy (basebuf, blabel);
- base = basebuf;
+ dw2_asm_output_data (1, DW_RLE_offset_pair,
+ "DW_RLE_offset_pair (%s)", lab);
+ dw2_asm_output_delta_uleb128 (blabel, text_section_label,
+ "Range begin address (%s)", lab);
+ dw2_asm_output_delta_uleb128 (elabel, text_section_label,
+ "Range end address (%s)", lab);
+ continue;
+ }
+ if (base == NULL)
+ {
+ dw_ranges *r2 = NULL;
+ if (i < len - 1)
+ r2 = &(*ranges_table)[i + 1];
+ if (r2
+ && r2->num != 0
+ && r2->label == NULL
+ && !r2->maybe_new_sec)
+ {
+ dw2_asm_output_data (1, DW_RLE_base_address,
+ "DW_RLE_base_address (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
+ "Base address (%s)", lab);
+ strcpy (basebuf, blabel);
+ base = basebuf;
+ }
}
+ if (base)
+ {
+ dw2_asm_output_data (1, DW_RLE_offset_pair,
+ "DW_RLE_offset_pair (%s)", lab);
+ dw2_asm_output_delta_uleb128 (blabel, base,
+ "Range begin address (%s)", lab);
+ dw2_asm_output_delta_uleb128 (elabel, base,
+ "Range end address (%s)", lab);
+ continue;
+ }
+ dw2_asm_output_data (1, DW_RLE_start_length,
+ "DW_RLE_start_length (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
+ "Range begin address (%s)", lab);
+ dw2_asm_output_delta_uleb128 (elabel, blabel,
+ "Range length (%s)", lab);
}
- if (base)
+ else
{
- dw2_asm_output_data (1, DW_RLE_offset_pair,
- "DW_RLE_offset_pair (%s)", lab);
- dw2_asm_output_delta_uleb128 (blabel, base,
- "Range begin address (%s)", lab);
- dw2_asm_output_delta_uleb128 (elabel, base,
- "Range end address (%s)", lab);
- continue;
+ dw2_asm_output_data (1, DW_RLE_start_end,
+ "DW_RLE_start_end (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
+ "Range begin address (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, elabel,
+ "Range end address (%s)", lab);
}
- dw2_asm_output_data (1, DW_RLE_start_length,
- "DW_RLE_start_length (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
- "Range begin address (%s)", lab);
- dw2_asm_output_delta_uleb128 (elabel, blabel,
- "Range length (%s)", lab);
-#else
- dw2_asm_output_data (1, DW_RLE_start_end,
- "DW_RLE_start_end (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
- "Range begin address (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, elabel,
- "Range end address (%s)", lab);
-#endif
}
/* Negative block_num stands for an index into ranges_by_label. */
if (!have_multiple_function_sections)
gcc_unreachable ();
-#ifdef HAVE_AS_LEB128
- dw2_asm_output_data (1, DW_RLE_start_length,
- "DW_RLE_start_length (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
- "Range begin address (%s)", lab);
- dw2_asm_output_delta_uleb128 (elabel, blabel,
- "Range length (%s)", lab);
-#else
- dw2_asm_output_data (1, DW_RLE_start_end,
- "DW_RLE_start_end (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
- "Range begin address (%s)", lab);
- dw2_asm_output_addr (DWARF2_ADDR_SIZE, elabel,
- "Range end address (%s)", lab);
-#endif
+ if (HAVE_AS_LEB128)
+ {
+ dw2_asm_output_data (1, DW_RLE_start_length,
+ "DW_RLE_start_length (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
+ "Range begin address (%s)", lab);
+ dw2_asm_output_delta_uleb128 (elabel, blabel,
+ "Range length (%s)", lab);
+ }
+ else
+ {
+ dw2_asm_output_data (1, DW_RLE_start_end,
+ "DW_RLE_start_end (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, blabel,
+ "Range begin address (%s)", lab);
+ dw2_asm_output_addr (DWARF2_ADDR_SIZE, elabel,
+ "Range end address (%s)", lab);
+ }
}
else
dw2_asm_output_data (1, DW_RLE_end_of_list,
static void push_uleb128 (vec<uchar, va_gc> **, unsigned int);
static void push_sleb128 (vec<uchar, va_gc> **, int);
-#ifndef HAVE_AS_LEB128
static int dw2_size_of_call_site_table (int);
static int sjlj_size_of_call_site_table (void);
-#endif
static void dw2_output_call_site_table (int, int);
static void sjlj_output_call_site_table (void);
}
\f
-#ifndef HAVE_AS_LEB128
static int
dw2_size_of_call_site_table (int section)
{
return size;
}
-#endif
static void
dw2_output_call_site_table (int cs_format, int section)
output_one_function_exception_table (int section)
{
int tt_format, cs_format, lp_format, i;
-#ifdef HAVE_AS_LEB128
char ttype_label[32];
char cs_after_size_label[32];
char cs_end_label[32];
-#else
int call_site_len;
-#endif
int have_tt_data;
int tt_format_size = 0;
else
{
tt_format = ASM_PREFERRED_EH_DATA_FORMAT (/*code=*/0, /*global=*/1);
-#ifdef HAVE_AS_LEB128
- ASM_GENERATE_INTERNAL_LABEL (ttype_label,
- section ? "LLSDATTC" : "LLSDATT",
- current_function_funcdef_no);
-#endif
+ if (HAVE_AS_LEB128)
+ ASM_GENERATE_INTERNAL_LABEL (ttype_label,
+ section ? "LLSDATTC" : "LLSDATT",
+ current_function_funcdef_no);
+
tt_format_size = size_of_encoded_value (tt_format);
assemble_align (tt_format_size * BITS_PER_UNIT);
dw2_asm_output_data (1, tt_format, "@TType format (%s)",
eh_data_format_name (tt_format));
-#ifndef HAVE_AS_LEB128
- if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ)
- call_site_len = sjlj_size_of_call_site_table ();
- else
- call_site_len = dw2_size_of_call_site_table (section);
-#endif
+ if (!HAVE_AS_LEB128)
+ {
+ if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ)
+ call_site_len = sjlj_size_of_call_site_table ();
+ else
+ call_site_len = dw2_size_of_call_site_table (section);
+ }
/* A pc-relative 4-byte displacement to the @TType data. */
if (have_tt_data)
{
-#ifdef HAVE_AS_LEB128
- char ttype_after_disp_label[32];
- ASM_GENERATE_INTERNAL_LABEL (ttype_after_disp_label,
- section ? "LLSDATTDC" : "LLSDATTD",
- current_function_funcdef_no);
- dw2_asm_output_delta_uleb128 (ttype_label, ttype_after_disp_label,
- "@TType base offset");
- ASM_OUTPUT_LABEL (asm_out_file, ttype_after_disp_label);
-#else
- /* Ug. Alignment queers things. */
- unsigned int before_disp, after_disp, last_disp, disp;
+ if (HAVE_AS_LEB128)
+ {
+ char ttype_after_disp_label[32];
+ ASM_GENERATE_INTERNAL_LABEL (ttype_after_disp_label,
+ section ? "LLSDATTDC" : "LLSDATTD",
+ current_function_funcdef_no);
+ dw2_asm_output_delta_uleb128 (ttype_label, ttype_after_disp_label,
+ "@TType base offset");
+ ASM_OUTPUT_LABEL (asm_out_file, ttype_after_disp_label);
+ }
+ else
+ {
+ /* Ug. Alignment queers things. */
+ unsigned int before_disp, after_disp, last_disp, disp;
- before_disp = 1 + 1;
- after_disp = (1 + size_of_uleb128 (call_site_len)
- + call_site_len
- + vec_safe_length (crtl->eh.action_record_data)
- + (vec_safe_length (cfun->eh->ttype_data)
- * tt_format_size));
+ before_disp = 1 + 1;
+ after_disp = (1 + size_of_uleb128 (call_site_len)
+ + call_site_len
+ + vec_safe_length (crtl->eh.action_record_data)
+ + (vec_safe_length (cfun->eh->ttype_data)
+ * tt_format_size));
- disp = after_disp;
- do
- {
- unsigned int disp_size, pad;
+ disp = after_disp;
+ do
+ {
+ unsigned int disp_size, pad;
- last_disp = disp;
- disp_size = size_of_uleb128 (disp);
- pad = before_disp + disp_size + after_disp;
- if (pad % tt_format_size)
- pad = tt_format_size - (pad % tt_format_size);
- else
- pad = 0;
- disp = after_disp + pad;
- }
- while (disp != last_disp);
+ last_disp = disp;
+ disp_size = size_of_uleb128 (disp);
+ pad = before_disp + disp_size + after_disp;
+ if (pad % tt_format_size)
+ pad = tt_format_size - (pad % tt_format_size);
+ else
+ pad = 0;
+ disp = after_disp + pad;
+ }
+ while (disp != last_disp);
- dw2_asm_output_data_uleb128 (disp, "@TType base offset");
-#endif
- }
+ dw2_asm_output_data_uleb128 (disp, "@TType base offset");
+ }
+ }
/* Indicate the format of the call-site offsets. */
-#ifdef HAVE_AS_LEB128
- cs_format = DW_EH_PE_uleb128;
-#else
- cs_format = DW_EH_PE_udata4;
-#endif
+ if (HAVE_AS_LEB128)
+ cs_format = DW_EH_PE_uleb128;
+ else
+ cs_format = DW_EH_PE_udata4;
+
dw2_asm_output_data (1, cs_format, "call-site format (%s)",
eh_data_format_name (cs_format));
-#ifdef HAVE_AS_LEB128
- ASM_GENERATE_INTERNAL_LABEL (cs_after_size_label,
- section ? "LLSDACSBC" : "LLSDACSB",
- current_function_funcdef_no);
- ASM_GENERATE_INTERNAL_LABEL (cs_end_label,
- section ? "LLSDACSEC" : "LLSDACSE",
- current_function_funcdef_no);
- dw2_asm_output_delta_uleb128 (cs_end_label, cs_after_size_label,
- "Call-site table length");
- ASM_OUTPUT_LABEL (asm_out_file, cs_after_size_label);
- if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ)
- sjlj_output_call_site_table ();
- else
- dw2_output_call_site_table (cs_format, section);
- ASM_OUTPUT_LABEL (asm_out_file, cs_end_label);
-#else
- dw2_asm_output_data_uleb128 (call_site_len, "Call-site table length");
- if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ)
- sjlj_output_call_site_table ();
+ if (HAVE_AS_LEB128)
+ {
+ ASM_GENERATE_INTERNAL_LABEL (cs_after_size_label,
+ section ? "LLSDACSBC" : "LLSDACSB",
+ current_function_funcdef_no);
+ ASM_GENERATE_INTERNAL_LABEL (cs_end_label,
+ section ? "LLSDACSEC" : "LLSDACSE",
+ current_function_funcdef_no);
+ dw2_asm_output_delta_uleb128 (cs_end_label, cs_after_size_label,
+ "Call-site table length");
+ ASM_OUTPUT_LABEL (asm_out_file, cs_after_size_label);
+ if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ)
+ sjlj_output_call_site_table ();
+ else
+ dw2_output_call_site_table (cs_format, section);
+ ASM_OUTPUT_LABEL (asm_out_file, cs_end_label);
+ }
else
- dw2_output_call_site_table (cs_format, section);
-#endif
+ {
+ dw2_asm_output_data_uleb128 (call_site_len, "Call-site table length");
+ if (targetm_common.except_unwind_info (&global_options) == UI_SJLJ)
+ sjlj_output_call_site_table ();
+ else
+ dw2_output_call_site_table (cs_format, section);
+ }
/* ??? Decode and interpret the data for flag_debug_asm. */
{
output_ttype (type, tt_format, tt_format_size);
}
-#ifdef HAVE_AS_LEB128
- if (have_tt_data)
- ASM_OUTPUT_LABEL (asm_out_file, ttype_label);
-#endif
+ if (HAVE_AS_LEB128 && have_tt_data)
+ ASM_OUTPUT_LABEL (asm_out_file, ttype_label);
/* ??? Decode and interpret the data for flag_debug_asm. */
if (targetm.arm_eabi_unwinder)