[RFC,ARM,7/8] ARMv8-M Security Extension's cmse_nonsecure_call: use __gnu_cmse_nonsecure_call]

Submitted by Senthil Kumar Selvaraj on Jan. 16, 2016, 2:49 p.m.

Details

Message ID 87bn8lk2a2.fsf@atmel.com
State New
Headers show

Commit Message

Senthil Kumar Selvaraj Jan. 16, 2016, 2:49 p.m.
User-agent: mu4e 0.9.13; emacs 24.5.1

Hi,

Apologies for the bad posting style (I don't have the
original email handy), but shouldn't _gnu_cmse_nonsecure_call be defined
with the .global directive in the below hunk (to make it visible when linking)?

Comments

Andre Vieira Jan. 19, 2016, 3:28 p.m.
On 16/01/16 14:49, Senthil Kumar Selvaraj wrote:
> User-agent: mu4e 0.9.13; emacs 24.5.1
>
> Hi,
>
> Apologies for the bad posting style (I don't have the
> original email handy), but shouldn't _gnu_cmse_nonsecure_call be defined
> with the .global directive in the below hunk (to make it visible when linking)?
>
> diff --git a/libgcc/config/arm/cmse_nonsecure_call.S b/libgcc/config/arm/cm=
> se_nonsecure_call.S
> new file mode 100644
> index 0000000000000000000000000000000000000000..bdc140f5bbe87c6599db225b1b9=
> b7bbc7d606710
> --- /dev/null
> +++ b/libgcc/config/arm/cmse_nonsecure_call.S
> @@ -0,0 +1,87 @@
> +.syntax unified
> +.thumb
> +__gnu_cmse_nonsecure_call:
>
> Right now, it ends up as a local symbol, and compiling and linking a
> program with cmse_nonsecure_call (say cmse-11.c), results in a linker
> error - the linker doesn't find the symbol even if it is present in
> libgcc.a. I found the problem that way - dumping symbols for my variant
> of libgcc.a and grepping showed the symbol to be available but local.
>
> Regards
> Senthil
>
Hi Senthil,

Thanks for catching that!

Cheers,
Andre

Patch hide | download patch | download mbox

diff --git a/libgcc/config/arm/cmse_nonsecure_call.S b/libgcc/config/arm/cm=
se_nonsecure_call.S
new file mode 100644
index 0000000000000000000000000000000000000000..bdc140f5bbe87c6599db225b1b9=
b7bbc7d606710
--- /dev/null
+++ b/libgcc/config/arm/cmse_nonsecure_call.S
@@ -0,0 +1,87 @@ 
+.syntax unified
+.thumb
+__gnu_cmse_nonsecure_call:

Right now, it ends up as a local symbol, and compiling and linking a
program with cmse_nonsecure_call (say cmse-11.c), results in a linker
error - the linker doesn't find the symbol even if it is present in
libgcc.a. I found the problem that way - dumping symbols for my variant
of libgcc.a and grepping showed the symbol to be available but local.

Regards
Senthil