Re: [PATCH rtems-tools] linkers/rtems-syms: Generate TLS symbols

2023-01-15 Thread Chris Johns
OK

Thanks
Chris

On 13/1/2023 8:12 am, Kinsey Moore wrote:
> When generating the symbol table for loadable modules, include TLS
> symbols so that the modules can reference them.
> ---
>  linkers/rtems-syms.cpp   | 5 +
>  rtemstoolkit/rld-elf.cpp | 1 +
>  rtemstoolkit/rld-symbols.cpp | 3 +++
>  3 files changed, 9 insertions(+)
> 
> diff --git a/linkers/rtems-syms.cpp b/linkers/rtems-syms.cpp
> index 5aa4d27..e5170e1 100644
> --- a/linkers/rtems-syms.cpp
> +++ b/linkers/rtems-syms.cpp
> @@ -242,6 +242,11 @@ output_sym::operator ()(const 
> rld::symbols::symtab::value_type& value)
>  
>c.write_line ("asm(\"  .asciz \\\"" + sym.name () + "\\\"\");");
>  
> +  if (sym.type() == STT_TLS)
> +  {
> +c.write_line ("asm(\"  .type \\\"" + sym.name () + "\\\", 
> %tls_object\");");
> +  }
> +
>if (embed)
>{
>  c.write_line ("#if __SIZEOF_POINTER__ == 8");
> diff --git a/rtemstoolkit/rld-elf.cpp b/rtemstoolkit/rld-elf.cpp
> index ffa3376..68efdbe 100644
> --- a/rtemstoolkit/rld-elf.cpp
> +++ b/rtemstoolkit/rld-elf.cpp
> @@ -891,6 +891,7 @@ namespace rld
>  {
>if (((stype == STT_NOTYPE) ||
> (stype == STT_OBJECT) ||
> +   (stype == STT_TLS) ||
> (stype == STT_FUNC)) &&
>((weak && (sbind == STB_WEAK)) ||
> (!unresolved && ((local && (sbind == STB_LOCAL)) ||
> diff --git a/rtemstoolkit/rld-symbols.cpp b/rtemstoolkit/rld-symbols.cpp
> index 661b598..01291c0 100644
> --- a/rtemstoolkit/rld-symbols.cpp
> +++ b/rtemstoolkit/rld-symbols.cpp
> @@ -277,6 +277,9 @@ namespace rld
>  case STT_FILE:
>type = "STT_FILE   ";
>break;
> +case STT_TLS:
> +  type = "STT_TLS";
> +  break;
>  default:
>if ((type_val >= STT_LOPROC) && (type_val <= STT_HIPROC))
>  type = "STT_LOPROC(" + rld::to_string (type_val) + ")";
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


[PATCH rtems-tools] linkers/rtems-syms: Generate TLS symbols

2023-01-12 Thread Kinsey Moore
When generating the symbol table for loadable modules, include TLS
symbols so that the modules can reference them.
---
 linkers/rtems-syms.cpp   | 5 +
 rtemstoolkit/rld-elf.cpp | 1 +
 rtemstoolkit/rld-symbols.cpp | 3 +++
 3 files changed, 9 insertions(+)

diff --git a/linkers/rtems-syms.cpp b/linkers/rtems-syms.cpp
index 5aa4d27..e5170e1 100644
--- a/linkers/rtems-syms.cpp
+++ b/linkers/rtems-syms.cpp
@@ -242,6 +242,11 @@ output_sym::operator ()(const 
rld::symbols::symtab::value_type& value)
 
   c.write_line ("asm(\"  .asciz \\\"" + sym.name () + "\\\"\");");
 
+  if (sym.type() == STT_TLS)
+  {
+c.write_line ("asm(\"  .type \\\"" + sym.name () + "\\\", 
%tls_object\");");
+  }
+
   if (embed)
   {
 c.write_line ("#if __SIZEOF_POINTER__ == 8");
diff --git a/rtemstoolkit/rld-elf.cpp b/rtemstoolkit/rld-elf.cpp
index ffa3376..68efdbe 100644
--- a/rtemstoolkit/rld-elf.cpp
+++ b/rtemstoolkit/rld-elf.cpp
@@ -891,6 +891,7 @@ namespace rld
 {
   if (((stype == STT_NOTYPE) ||
(stype == STT_OBJECT) ||
+   (stype == STT_TLS) ||
(stype == STT_FUNC)) &&
   ((weak && (sbind == STB_WEAK)) ||
(!unresolved && ((local && (sbind == STB_LOCAL)) ||
diff --git a/rtemstoolkit/rld-symbols.cpp b/rtemstoolkit/rld-symbols.cpp
index 661b598..01291c0 100644
--- a/rtemstoolkit/rld-symbols.cpp
+++ b/rtemstoolkit/rld-symbols.cpp
@@ -277,6 +277,9 @@ namespace rld
 case STT_FILE:
   type = "STT_FILE   ";
   break;
+case STT_TLS:
+  type = "STT_TLS";
+  break;
 default:
   if ((type_val >= STT_LOPROC) && (type_val <= STT_HIPROC))
 type = "STT_LOPROC(" + rld::to_string (type_val) + ")";
-- 
2.30.2

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel