Re: Arm gnu directive assembler problem



On 2005-06-30, pes <nospam@xxxxxxx> wrote:

> There is an error on the .end line, I' ve no more description

It's pretty hard to help if you can't post the actuall error
mesage.

>>>and if I remove the dot before text2
>>
>> Do you remove the dot in the linker script as well?
>>
>
> No, not in the script

The names in the linker script have to match the names in the
assembly file.

>>>compilation and link are ok but text2 section doesn' t seems to
>>>exists.
>>
>> Doesn't exist where?
>
> The value isn't in memory when the program is loaded

Is it in the object file output by the assember? Is it in the
final object file output by the linker? How do you load the
program in to memory?

>> If you want the contents of the section to show up in hex files
>> and linker output, you probably need to set the section
>> attributes like this:
>>
>>
>> .section .text2,"a",@progbits
>>
>> Technically, you probably should be using an "x" flag for a
>> text section as well. It seems to work fine without it, but
>> it's the right thing to do:
>>
>> .section .text2,"ax",@progbits
>>
>> For a writable section, add a w to the flags string.
>
> There is no change, but I use
> .section .text2,"ax","progbits"
> for syntax

First, check the object file that the assembler generates using
arm-elf-objdump --section-headers. Then check the object file
produced by the linker using the same command.

> Yes, but I' m a little embarassed I don' t see any examples
> with sections other than standard text bss & data.

What version of binutils are you using?



`.section NAME'
===============

Use the `.section' directive to assemble the following code into a
section named NAME.

This directive is only supported for targets that actually support
arbitrarily named sections; on `a.out' targets, for example, it is not
accepted, even with a standard `a.out' section name.

[COFF stuff deleted]

ELF Version
-----------

This is one of the ELF section stack manipulation directives. The
others are `.subsection' (*note SubSection::), `.pushsection' (*note
PushSection::), `.popsection' (*note PopSection::), and `.previous'
(*note Previous::).

For ELF targets, the `.section' directive is used like this:

.section NAME [, "FLAGS"[, @TYPE[, @ENTSIZE]]]

The optional FLAGS argument is a quoted string which may contain any
combination of the following characters:
`a'
section is allocatable

`w'
section is writable

`x'
section is executable

`M'
section is mergeable

`S'
section contains zero terminated strings

The optional TYPE argument may contain one of the following
constants:
`@progbits'
section contains data

`@nobits'
section does not contain data (i.e., section only occupies space)

Note on targets where the `@' character is the start of a comment (eg
ARM) then another character is used instead. For example the ARM port
uses the `%' character.

If FLAGS contains `M' flag, TYPE argument must be specified as well
as ENTSIZE argument. Sections with `M' flag but not `S' flag must
contain fixed size constants, each ENTSIZE octets long. Sections with
both `M' and `S' must contain zero terminated strings where each
character is ENTSIZE bytes long. The linker may remove duplicates
within sections with the same name, same entity size and same flags.

If no flags are specified, the default flags depend upon the section
name. If the section name is not recognized, the default will be for
the section to have none of the above flags: it will not be allocated
in memory, nor writable, nor executable. The section will contain data.

For ELF targets, the assembler supports another type of `.section'
directive for compatibility with the Solaris assembler:

.section "NAME"[, FLAGS...]

Note that the section name is quoted. There may be a sequence of
comma separated flags:
`#alloc'
section is allocatable

`#write'
section is writable

`#execinstr'
section is executable

This directive replaces the current section and subsection. The
replaced section and subsection are pushed onto the section stack. See
the contents of the gas testsuite directory `gas/testsuite/gas/elf' for
some examples of how this directive and the other section stack
directives work.



--
Grant Edwards grante Yow! I feel... JUGULAR...
at
visi.com
.



Relevant Pages

  • Re: /LARGEADDRESSAWARE option - can someone please post this to QualityCentral
    ... There's a full list of flags you can use here-- ... Here's the documentation for $SetPEFlags and $SetPEOptFlags from Delphi ... by these directives. ... it's not an error to place these directives in unit source ...
    (borland.public.delphi.non-technical)
  • Re: Stop processing more rules
    ... If a rule applies the action will be performed and the next rule will fire. ... the Deleted Items folder so you can still apply rules to it like flags or ... > Or maybe it should say, "Stop processing any further directives in *this* ... > situation when I would want to allow exceptions in regard to messages I ...
    (microsoft.public.outlook.general)
  • Re: dynamic library loading, missing symbols
    ... What flags are given to that dlopen call? ... The dynamic linker doesn't search files to resolve symbols; ... in the libraries that have already been loaded. ...
    (comp.lang.python)
  • Re: What micros do you actually hate to work with?
    ... Yeh, he translated from assembler to C and back again, what does that ... Intrinsics are standard C, that's why they exist. ... Most compilers treat ... Similary intrinsics that access status flags. ...
    (comp.arch.embedded)
  • Re: #defines
    ... compilation only. ... The [Flags] attribute is a hint for the compiler that binary operations (&, ... > directives for the purposes of defining bit mask definitions such as the ...
    (microsoft.public.dotnet.languages.csharp)