Como mapear um nome de função e número de linha por um endereço de memória na linguagem C?

como você pode mapear o nome da função e o número da linha com um endereço de memória no GCC?

ou seja, assumindo um protótipo na linguagem C:

void func() {
  // Get the address of caller , maybe this could be avoided
  MemoryAddress = get_call_address();

  // Which line from source code is executing , which calls func()
  LineNumber = get_lineno_from_symbol ( &MemoryAddress );

  // Grab the name who calls func()
  FunctionName = get_func_from_symbol ( &MemoryAddress );
}

Existe alguma API existente fornecida pelo GCC ou o que seja, que atenda aos meus requisitos?

Muito obrigado por qualquer uma de vocês resposta ;-P

questionAnswers(2)

yourAnswerToTheQuestion