Browse Source

visibility.h: add #pragma GCC poison getenv setenv putenv

Just to make sure that it will never be used on NuttX. This is not an
architectural limitation, just a memory optimization, since we call
clearenv() on NuttX.
sbg
Beat Küng 8 years ago committed by Lorenz Meier
parent
commit
358bcb6ae0
  1. 16
      src/include/visibility.h
  2. 3
      src/modules/logger/logger.cpp
  3. 2
      src/modules/replay/definitions.hpp

16
src/include/visibility.h

@ -39,8 +39,7 @@ @@ -39,8 +39,7 @@
* This file is normally included automatically by the build system.
*/
#ifndef __SYSTEMLIB_VISIBILITY_H
#define __SYSTEMLIB_VISIBILITY_H
#pragma once
#ifdef __EXPORT
# undef __EXPORT
@ -59,4 +58,15 @@ @@ -59,4 +58,15 @@
# define __BEGIN_DECLS
# define __END_DECLS
#endif
#endif
#ifdef __PX4_NUTTX
/* On NuttX we call clearenv() so we cannot use getenv() and others (see px4_task_spawn_cmd() in px4_nuttx_tasks.c).
* We need to include the headers declaring getenv() before the pragma, otherwise it will trigger a poison error.
*/
#include <stdlib.h>
#ifdef __cplusplus
#include <cstdlib>
#endif
#pragma GCC poison getenv setenv putenv
#endif /* __PX4_NUTTX */

3
src/modules/logger/logger.cpp

@ -370,6 +370,7 @@ void Logger::run_trampoline(int argc, char *argv[]) @@ -370,6 +370,7 @@ void Logger::run_trampoline(int argc, char *argv[])
PX4_ERR("alloc failed");
} else {
#ifndef __PX4_NUTTX
//check for replay mode
const char *logfile = getenv(px4::replay::ENV_FILENAME);
@ -377,6 +378,8 @@ void Logger::run_trampoline(int argc, char *argv[]) @@ -377,6 +378,8 @@ void Logger::run_trampoline(int argc, char *argv[])
logger_ptr->setReplayFile(logfile);
}
#endif /* __PX4_NUTTX */
logger_ptr->run();
}

2
src/modules/replay/definitions.hpp

@ -38,7 +38,7 @@ namespace px4 @@ -38,7 +38,7 @@ namespace px4
namespace replay
{
static const char *ENV_FILENAME = "replay"; ///< name for getenv()
static const char __attribute__((unused)) *ENV_FILENAME = "replay"; ///< name for getenv()
static const char __attribute__((unused)) *ENV_MODE = "replay_mode"; ///< name for getenv()

Loading…
Cancel
Save