mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
e175a2fc60
The "drop" call in wrap_comment already increments pc. Defining DOCDD in proto.str is a warning fix. PR 31314 * chew.c (wrap_comment): Don't increment pc. * proto.str (DOCDD): Define.
175 lines
4.1 KiB
Plaintext
175 lines
4.1 KiB
Plaintext
- Source extraction program for chew.
|
|
- Copyright (C) 1990-2024 Free Software Foundation, Inc.
|
|
- This file is part of BFD, the Binary File Descriptor library.
|
|
|
|
- This program is free software; you can redistribute it and/or modify
|
|
- it under the terms of the GNU General Public License as published by
|
|
- the Free Software Foundation; either version 3 of the License, or
|
|
- (at your option) any later version.
|
|
|
|
- This program is distributed in the hope that it will be useful,
|
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
- GNU General Public License for more details.
|
|
|
|
- You should have received a copy of the GNU General Public License
|
|
- along with this program; if not, write to the Free Software
|
|
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
- chew.c keywords defined here put output into bfd-in2.h and libbfd.h or
|
|
- libcoff.h, from comments in the source. See also doc.str.
|
|
- Output lines generally come from comment lines starting with a dot,
|
|
- or from keywords like SYNOPSIS. Output switches to bfd-in2.h at the
|
|
- end of each comment. Use INTERNAL* to output to libbfd.h.
|
|
-
|
|
- EXTERNAL: output to bfd-in2.h, nothing to docs
|
|
- INTERNAL: output to libbfd.h, nothing to docs
|
|
- CODE_FRAGMENT: output to header and docs
|
|
- FUNCTION: output to bfd-in2.h and docs
|
|
- INTERNAL_FUNCTION: output to libbfd.h and docs
|
|
- DEFINITION: alias for FUNCTION, but generally doesn't have SYNOPSIS,
|
|
- used for structs and other random code
|
|
- INTERNAL_DEFINITION: as above, but output to libbfd.h and docs
|
|
- ENUM* outputs to bfd-in2.h, libbfd.h and docs.
|
|
|
|
: SYNOPSIS
|
|
skip_past_newline
|
|
get_stuff_in_command
|
|
translatecomments
|
|
strip_trailing_newlines
|
|
remchar
|
|
" ATTRIBUTE_HIDDEN" internalmode @ catstrif
|
|
";\n\n" catstr
|
|
indent
|
|
maybecatstr
|
|
;
|
|
|
|
- Ignore stuff that is for the docs. Output lines starting with dots.
|
|
: ignore
|
|
skip_past_newline
|
|
get_stuff_in_command
|
|
outputdots
|
|
maybecatstr
|
|
;
|
|
|
|
: CODE_FRAGMENT
|
|
ignore ;
|
|
|
|
- Output goes to bfd-in2.h
|
|
: EXTERNAL
|
|
0 internalmode ! ignore ;
|
|
|
|
- Output goes to libbfd.h/libcoff.h
|
|
: INTERNAL
|
|
1 internalmode ! ignore ;
|
|
|
|
- input stack { a b } output b if internal, a if external
|
|
: ifinternal
|
|
"" swap 1 internalmode ! maybecatstr
|
|
swap
|
|
"" swap 0 internalmode ! maybecatstr
|
|
catstr
|
|
;
|
|
|
|
- Put note in output string, regardless of internal mode.
|
|
: COMMENT
|
|
skip_past_newline
|
|
get_stuff_in_command
|
|
translatecomments
|
|
catstr
|
|
;
|
|
|
|
- SENUM enum-type-name
|
|
- ENUM enum-name
|
|
- ENUMX addl-enum-name
|
|
- ENUMDOC doc for preceding enums
|
|
- ENDSENUM max-enum-name
|
|
|
|
: make_enum_header
|
|
dup
|
|
"enum " swap catstr
|
|
"\n{\n" catstr
|
|
swap " _dummy_first_" swap catstr catstr
|
|
",\n" catstr
|
|
;
|
|
: make_string_table_header
|
|
dup
|
|
"#ifdef _BFD_MAKE_TABLE_" swap catstr swap
|
|
"\n\nstatic const char *const " swap catstr catstr
|
|
"_names[] = { \"@@uninitialized@@\",\n" catstr
|
|
;
|
|
: SENUM
|
|
skip_past_newline
|
|
copy_past_newline
|
|
remchar
|
|
dup
|
|
make_enum_header
|
|
swap
|
|
make_string_table_header
|
|
ifinternal
|
|
catstr
|
|
get_stuff_in_command catstr
|
|
translatecomments ;
|
|
: ENDSENUM
|
|
skip_past_newline
|
|
copy_past_newline strip_trailing_newlines
|
|
dup
|
|
" " swap catstr "\n};\n" catstr swap
|
|
" \"@@overflow: " swap catstr "@@\",\n};\n#endif\n\n" catstr
|
|
ifinternal
|
|
catstr
|
|
;
|
|
: make_enumerator
|
|
" " swap catstr
|
|
",\n" catstr
|
|
;
|
|
: make_enumerator_string
|
|
" \"" swap catstr
|
|
"\",\n" catstr
|
|
;
|
|
: ENUM
|
|
skip_past_newline
|
|
copy_past_newline
|
|
remchar
|
|
dup
|
|
make_enumerator
|
|
swap
|
|
make_enumerator_string
|
|
ifinternal
|
|
;
|
|
: ENUMX ENUM catstr ;
|
|
: ENUMEQ
|
|
skip_past_newline
|
|
"#define "
|
|
copy_past_newline remchar
|
|
catstr
|
|
" "
|
|
catstr
|
|
copy_past_newline
|
|
catstr
|
|
"" swap 0 internalmode ! maybecatstr
|
|
;
|
|
: ENUMEQX ENUMEQ catstr ;
|
|
: ENUMDOC
|
|
skip_past_newline
|
|
get_stuff_in_command
|
|
strip_trailing_newlines
|
|
" " wrap_comment
|
|
"\n" swap catstr "\n" catstr
|
|
- discard it if we're doing internal mode
|
|
"" swap 0 internalmode ! maybecatstr
|
|
swap
|
|
catstr catstr
|
|
;
|
|
: SECTION ignore ;
|
|
: SUBSECTION ignore ;
|
|
: SUBSUBSECTION ignore ;
|
|
: INODE ignore ;
|
|
: DESCRIPTION ignore ;
|
|
: DOCDD ignore ;
|
|
: ENDDD EXTERNAL ;
|
|
: FUNCTION EXTERNAL ;
|
|
: INTERNAL_FUNCTION INTERNAL ;
|
|
: DEFINITION EXTERNAL ;
|
|
: INTERNAL_DEFINITION INTERNAL ;
|