Skip to content

V2.1.14 - #129

Open
RainerZ wants to merge 8 commits into
vectorgrp:masterfrom
RainerZ:V2.1.14
Open

V2.1.14#129
RainerZ wants to merge 8 commits into
vectorgrp:masterfrom
RainerZ:V2.1.14

Conversation

@RainerZ

@RainerZ RainerZ commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator
  • xcpclient related changes:

    • Improved variable registration for global and static variables
    • Global variables and local static variables in functions without event trigger are registered, but not associated to any specific default DAQ event
    • Unique typedef names for struct/class types with the same name in different namespaces, classes or functions (motor_control.Input, valve_control.Input). Previously all variables of such types referenced the first registered typedef and were shown with the wrong type.
    • Global variables with the same name in different namespaces are registered with namespace qualified names (motor_control.input, valve_control.input) instead of dropping all but the first one
    • A struct type which is used for measurement and for calibration variables gets separate typedefs
    • The GCC declaration and definition entries of a namespace scope variable are merged, they no longer produce duplicate instance errors
    • Variables with internal linkage in a namespace and without DWARF location (e.g. metadata markers XCP_COMMENT(motor_control__input, ...) inside a namespace) are resolved by their mangled symbol name
    • Metadata annotations placed in the same namespace or function as the variable no longer need a scope prefix (XCP_COMMENT(input, ...) in namespace motor_control annotates motor_control.input), explicit prefixes keep working. Metadata for the typedef fields of namespace qualified instances.
    • Local variables without a DWARF location (optimized away) are no longer resolved to the address of a global variable with the same name, only symbols with local binding are considered for them
    • no_a2l_demo, no_a2l_demo_cpp: more demo cases, no_a2l_demo_cpp demonstrates types and variables with the same name in different namespaces
  • Documentation: new docs/OFFLINE_A2L.md for the offline A2L generation with xcpclient (workflow, naming rules, supported types, diagnostics), docs/TECHNICAL.md keeps the library topics and the instrumentation marker contract, xcpclient and no_a2l_demo READMEs updated

  • FreeRTOS related changes:

    • Allow custom memory attributes for queue32m
    • Avoid mutex allocation when queue32m uses critical sections
    • Support optional recursive FreeRTOS mutexes
    • Fix typos in FreeRTOS documentation and comments
    • Fix UDP segment size calculation from MTU
    • Make FreeRTOS queue segment count configurable
    • Support static allocation for FreeRTOS tasks and mutexes
    • Use static storage when configSUPPORT_STATIC_ALLOCATION is enabled
    • Preserve dynamic allocation and recursive mutex support
    • Update FreeRTOS documentation and remove obsolete queue TODOs
    • Fix FreeRTOS delay rounding and overflow
    • Avoid unaligned IPv4 address access in FreeRTOS/lwIP
    • Fix synchronization of FreeRTOS queue state
    • Correct FreeRTOS queue and lwIP documentation
    • Fix FreeRTOS emulator clock test build

RainerZ and others added 8 commits September 6, 2026 20:43
xcpclient: Build warnings removed, README.md updated
    - Improved variable registration for global and static variables
    - Global variables and local static variables in functions without event trigger are registered, but not associated to any specific default DAQ event
    - no_a2l_demo, no_a2l_demo_cpp: more demo cases
… scopes (ELF->A2L)

- Struct/class types with the same DWARF name in different namespaces, classes or
  functions get scope qualified typedef names (motor_control.Input, valve_control.Input).
  Previously all variables of such types referenced the first registered typedef and
  were shown with the wrong type.
- Typedefs with identical content are merged (same type in several compilation units),
  a name still used by different content gets a numeric suffix. A type used for
  measurement and for calibration variables gets separate typedefs.
- Global variables with the same name in different namespaces get namespace qualified
  instance names instead of being dropped as duplicates.
- GCC declaration/definition entry pairs of namespace scope variables are merged.
- Symbol table address resolution: mangled names for namespace scope statics without
  DWARF location, only local symbols for function local variables (no more stack
  variables mapped onto same-named globals).
- Metadata macros in the same namespace or function as the variable need no scope
  prefix (XCP_COMMENT(input, ...) in namespace motor_control annotates
  motor_control.input), explicit prefixes keep working. Metadata for typedef fields
  of namespace qualified instances.
- Fixture cpp_namespaces.elf and unit tests, README, TECHNICAL.md and CHANGELOG updated.
- no_a2l_demo_cpp: same-named types and variables in namespaces with XCP_COMMENT,
  volatile test_array, regenerated CANape A2L/ELF.
- xcpclient version 3.0.10

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…fixtures and tests

- DebugData::qualified_type_names is filled once after the types are loaded: it follows
  const/volatile qualifiers to the named type, finds the names used in more than one
  scope and stores the dotted name for those types only. DebugData::get_type_name
  returns it or the plain DWARF name; register_struct keeps only the content
  signature and the numeric suffix. No change in the generated A2L files.
- cpp_namespaces.cpp: volatile and const qualified variables of the colliding Input types
- c_local_types_a.c/_b.c: struct tags with the same name but different content in two
  compilation units, registered as state and state_1
- cpp_type_name_collisions.cpp: fixture contributed with pull request
  vectorgrp#126
- Unit tests for the three fixtures and for the qualified names at DWARF level

Co-Authored-By: Pamir Mundt and Claude Fable 5.1
TECHNICAL.md restructured
Different READMEs updated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant