実行可能ファイルに含めるファイルに大きな文字列リソースがいくつかあります。以下を使用して、それらを実行可能ファイルに含めます。を使用すると、特別な処理を行わずに*.S
GCC を呼び出してオブジェクト ファイルを生成できます。as
;; ca_conf.S
.section .rodata
;; OpenSSL's CA configuration
.global ca_conf
.type ca_conf, @object
.align 8
ca_conf:
ca_conf_start:
.incbin "res/openssl-ca.cnf"
ca_conf_end:
.byte 0
;; The string's size (if needed)
.global ca_conf_size
.type ca_conf_size, @object
.align 4
ca_conf_size:
.int ca_conf_end - ca_conf_start
文字列を含めた後に を追加して.byte 0
、文字列が確実にNULL
終了するようにします。これによりca_conf
、 Cconst char*
または{ca_conf,ca_conf_size}
C++ 文字列として使用できます。
アセンブラまたはリンカは、NULL
ターミネータが終端文字列から分離されるように再配置しますか? それとも、アセンブラとリンカは常にそれらを一緒に保ちますか?