Home | History | Annotate | Download | only in ld-scripts
      1 # Test ALIGNOF in a linker script.
      2 # Copyright (C) 2007-2014 Free Software Foundation, Inc.
      3 # Contributed by Nathan Sidwell <nathan (at) codesourcery.com>
      4 #
      5 # This file is part of the GNU Binutils.
      6 #
      7 # This program is free software; you can redistribute it and/or modify
      8 # it under the terms of the GNU General Public License as published by
      9 # the Free Software Foundation; either version 3 of the License, or
     10 # (at your option) any later version.
     11 #
     12 # This program is distributed in the hope that it will be useful,
     13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 # GNU General Public License for more details.
     16 #
     17 # You should have received a copy of the GNU General Public License
     18 # along with this program; if not, write to the Free Software
     19 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     20 # MA 02110-1301, USA.
     21 
     22 # Only ELF and PE-COFF targets record section alignment.
     23 
     24 if {![is_elf_format] && ![is_pecoff_format]} {
     25     return
     26 }
     27 
     28 set testname "ALIGNOF"
     29 
     30 if ![ld_assemble $as $srcdir/$subdir/alignof.s tmpdir/alignof.o] {
     31     unresolved $testname
     32     return
     33 }
     34 
     35 if ![ld_simple_link $ld tmpdir/alignof "-T $srcdir/$subdir/alignof.t tmpdir/alignof.o"] {
     36     fail $testname
     37     return
     38 }
     39 
     40 if ![ld_nm $nm "" tmpdir/alignof] {
     41     unresolved $testname
     42     return
     43 }
     44 
     45 if {![info exists nm_output(alignof_text)] \
     46      || ![info exists nm_output(alignof_data)]} {
     47     send_log "bad output from nm\n"
     48     verbose "bad output from nm"
     49     fail $testname
     50     return
     51 }
     52 
     53 if {$nm_output(alignof_text) != 64} {
     54     send_log "alignof_text != 64\n"
     55     verbose "alignof_text != 64"
     56     fail $testname
     57     return
     58 }
     59 
     60 if {$nm_output(alignof_data) != 16} {
     61     send_log "alignof_data != 16\n"
     62     verbose "alignof_data != 16"
     63     fail $testname
     64     return
     65 }
     66 
     67 pass $testname
     68